import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;

import org.jdom2.Element;

public class ConsultorXML  {
	
	private XMLHandler archivoxml;
	private Element elemento;
	
	public ConsultorXML(String path){
		this.archivoxml = new XMLHandler(path);
		this.elemento = null;
	
	}
	

	public Element getElemento(){
		return elemento;
	}
	
	public Element getElemento(String key){
		ListIterator<Element> it= this.archivoxml.cargar().getChildren().listIterator();
		Element e= it.next();
		while (!(e.getAttributeValue("id").equals(key)) && it.hasNext()){
			e= it.next();
		}
		if (e.getAttributeValue("id").equals(key)){
			return e;
			
		}
		else return null;
	}
	
	
	public LinkedList<String> consultarInformacionPersonajes(){
		
		Element datosIniciales= this.archivoxml.cargar();
		LinkedList<String> listaPersonajes = new LinkedList<String>();
		
		listaPersonajes.add(datosIniciales.getAttributeValue("posicionPacman"));
		listaPersonajes.add(datosIniciales.getAttributeValue("fila"));
		listaPersonajes.add(datosIniciales.getAttributeValue("columna"));
		listaPersonajes.add(datosIniciales.getAttributeValue("sentido"));
		listaPersonajes.add(datosIniciales.getAttributeValue("puntaje"));
		listaPersonajes.add(datosIniciales.getAttributeValue("finJuego"));
		
		List<Element> elementos= this.archivoxml.cargar().getChildren();
		ListIterator<Element> it= elementos.listIterator();
		Element elemento; 
		while (it.hasNext()){
			elemento= it.next();
			listaPersonajes.add(elemento.getAttributeValue("id"));
			listaPersonajes.add(elemento.getAttributeValue("nodo"));
			listaPersonajes.add(elemento.getAttributeValue("fila"));
			listaPersonajes.add(elemento.getAttributeValue("columna"));
			listaPersonajes.add(elemento.getAttributeValue("sentido"));
			listaPersonajes.add(elemento.getAttributeValue("personalidad"));
			listaPersonajes.add(elemento.getAttributeValue("estado"));
		}
		return listaPersonajes;
	}
	
	public LinkedList<String> consultarInformacionLaberinto(){
		
				
		Element datosIniciales= this.archivoxml.cargar();
		
		LinkedList<String> listaLaberinto = new LinkedList<String>();
		
		listaLaberinto.add(datosIniciales.getAttributeValue("ancho"));
		listaLaberinto.add(datosIniciales.getAttributeValue("alto"));
		listaLaberinto.add(datosIniciales.getAttributeValue("nodoAncho"));
		listaLaberinto.add(datosIniciales.getAttributeValue("nodoAlto"));
		listaLaberinto.add(datosIniciales.getAttributeValue("inicioPacman"));
		listaLaberinto.add(datosIniciales.getAttributeValue("inicioFantasmas"));
		
		List<Element> elementos= this.archivoxml.cargar().getChildren();
		ListIterator<Element> it= elementos.listIterator();
		Element elemento; 
		while (it.hasNext()){
			elemento=it.next();
			listaLaberinto.add(elemento.getAttributeValue("id"));
			listaLaberinto.add(elemento.getAttributeValue("fila"));
			listaLaberinto.add(elemento.getAttributeValue("columna"));
			listaLaberinto.add(elemento.getAttributeValue("contiene"));
			listaLaberinto.add(elemento.getAttributeValue("izquierda"));
			listaLaberinto.add(elemento.getAttributeValue("derecha"));
			listaLaberinto.add(elemento.getAttributeValue("arriba"));
			listaLaberinto.add(elemento.getAttributeValue("abajo"));
			
		}

		return listaLaberinto;
	}
	
	public String consultorTickPacman(){
		
		Element elementotick= this.archivoxml.cargar().getChild("pacman");
		
		String tick =elementotick.getAttributeValue("direccion");
		
		return tick;
	}
	
	

}
